package com.enen.controller;

import com.enen.anno.LogOperation;
import com.enen.pojo.Dept;
import com.enen.pojo.Result;
import com.enen.service.DeptService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
@Slf4j // 记录日志
// 控制层接受请求，处理响应
@RestController
public class DeptController {

    @Autowired
    private DeptService deptService;
    /*
    * 查询部门列表
    * */
    @GetMapping("/depts")
    public Result findAll(){
        //System.out.println("查询所有部门信息");
        log.info("查询所有部门信息");
        // 创建一个deptlist集合，接收业务层的数据
        List<Dept> deptList = deptService.findAll();
        // 返回给前端
        return Result.success(deptList);
    }

    /*
    * 删除部门
    * */
    // @RequestParam("id")获取前端的请求参数名，如果请求参数名和形参名一致 可以省略不写，(因为初学所以这里写上)
    //required = false 表示如果没有请求参数也能访问不会报错，默认是ture
    @LogOperation
    @DeleteMapping("/depts")
    public Result delect(@RequestParam(value = "id",required = false) Integer id){
//        System.out.println("根据ID删除部门" +id);
        log.info("根据ID删除部门{}",id);
        deptService.delect(id);
        return Result.success();
    }

    /*
    * 新增部门
    * */
    @LogOperation
    @PostMapping("/depts")
    public Result add(@RequestBody Dept dept){
        //System.out.println("新增部门" + dept);
        log.info("新增部门{}",dept);
        deptService.add(dept);
        return Result.success();
    }

    /*
    * 根据id查询
    * */
    // @PathVariable获取路径参数
    @GetMapping("/depts/{id}")
    public Result findId(@PathVariable("id") Integer id){
        //System.out.println("根据id查询部门" + id);
        log.info("根据id查询部门{}",id);
        Dept dept = deptService.findId(id);
        return Result.success(dept);
    }

    /*
    * 修改部门信息
    * */
    @LogOperation
    @PutMapping("/depts")
    public Result update(@RequestBody Dept dept){
        //System.out.println("修改部门信息为" + dept);
        log.info("修改部门信息为{}",dept);
        deptService.update(dept);
        return Result.success();
    }
}
